/*=============================================================================

  AREA APPLICATION MODULE

  FILE: area_mod.h
  
  DESCRIPTION

    Module for Application

  EXTERNALIZED FUNCTIONS

    
  Copyright (c) DaeSung Engineering Inc. All rights reserved.

=============================================================================*/
/*=============================================================================

                             EDIT HISTORY

  ---------  -------  -------------------------------------------------------
    when       who     what, where, why
  ---------  -------  -------------------------------------------------------
   05/26/05   pkim    Version E01.0

=============================================================================*/

#ifndef _AREA_MOD_H_
#define _AREA_MOD_H_

/*=============================================================================
  HEADER INCLUSION
=============================================================================*/
#include <Cust_AppDef.h>
#include "area.h"
#include <SYS_app.h>

/*=============================================================================
  CONSTANT DEFINITION
=============================================================================*/
// QUE-DEFINITION
#define AREA_QUE_MAX						(3)

//---PROCESS.TASK
#define AREA_TASK_SIG			(0x0000200)

/*=============================================================================
  MACRO DEFININITION
=============================================================================*/
#define AREACXT(a)				((area_s*)a)
#define CFGMOD(a)				(((area_s*)a)->cfg)

/*=============================================================================
  STRUCTURE DEFINITION
=============================================================================*/

//-----------------------------------------------------------------------------
// MEASUREMENT DEFINITION
//-----------------------------------------------------------------------------
typedef struct
{
	//---------------------------------
	// CONFIGURATION
	//---------------------------------
	area_cfg_s			*cfg;
	
	//---------------------------------
	// UI
	//---------------------------------
	mcxt				rtui[AREA_MAX_RTUI];
	
	//---------------------------------
	// READ
	//---------------------------------
	Img2D				img;
	
	//---------------------------------
	// BASIC
	//---------------------------------
	mcxt				task;
	int32				cntLOG;
	LList_s				*que;
	ObjClient_s			*c;
	dword				mode;
} area_s;

typedef struct
{
	int32		acqID;
	Img2D		o;	
} area_acq_s;

/*=============================================================================
  EXTERNALIZED FUNCTION DEFINITION
=============================================================================*/
#ifdef __cplusplus
extern "C" {
#endif

//-----------------------------------------------------------------------------
// CONFIGURATION
//-----------------------------------------------------------------------------
void area_cfg_alloc(mcxt app);
void area_cfg_free(mcxt app);
void area_cfg_init(mcxt app);
void area_cfg_close(mcxt app);

//-----------------------------------------------------------------------------
// TASK
//-----------------------------------------------------------------------------
void area_task_init(mcxt app);
void area_task_close(mcxt app);
area_acq_s *area_ACQalloc(void);
void area_ACQfree(mcxt ptr);

//-----------------------------------------------------------------------------
// FILE IO
//-----------------------------------------------------------------------------
void area_fio_save(mcxt app, area_que_s *q);

//-----------------------------------------------------------------------------
// UTIL
//-----------------------------------------------------------------------------
void area_send_event(mcxt app, dword evt, dword wp, dword lp);

#ifdef __cplusplus
}
#endif

#endif /* _AREA_MOD_H_ */

/*--- END OF area_mod.h ---*/
